package com.xb.loan.admin.util;

import com.xb.loan.util.log.DefaultLoggerFacotry;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * 项目名称 : oss-center
 * 创建日期 : 2015年11月27日
 * 类  描  述 : 对象工具类
 */
public class ObjectUtil {
	private static Logger logger = DefaultLoggerFacotry.getLogger(ObjectUtil.class);
	/**
	 * 字符串不为空（null,'',' '）  返回本身.trim()   否则返回null
	 * @param str
	 * @return
	 * 2015年11月27日 by zhangyi
	 */
	public static String formatString(String str){
		if(StringUtils.isNotBlank(str)){
			return str.trim();
		}
		return null;
	}
	/**
	 * 格式化字符到Integer
	 * @param str
	 * @return
	 * 2015年12月29日 by zhangyi
	 */
	public static Integer formatString2Integer(String str){
		if(StringUtils.isNotBlank(str)){
			return Integer.parseInt(str.trim());
		}
		return null;
	}
	
	/**
	 * 将列表的JavaBean转换为列表的Map，方便Oss导出数据
	 * @param list
	 * @return
	 * 2015年12月21日 by wenju.song
	 */
	public static <T> List<Map<String, Object>> transfer2Map(List<T> list){
		List<Map<String, Object>> result = new ArrayList<Map<String,Object>>();
		if(list == null || list.size() < 1)
			return result;
		for(int i = 0; i < list.size(); i++){
			T t = list.get(i);
			Map<String, Object> map = transfer2MapInner(t);
			result.add(map);
		}
		return result;
	}
	
	/**
	 * 将JavaBean转换为Map，方便Oss导出数据
	 * @param obj
	 * @return
	 * 2015年12月21日 by wenju.song
	 */
	public static Map<String, Object> transfer2MapInner(Object obj){
		Map<String, Object> result = new HashMap<String, Object>();
		if(obj == null)
			return result;
		Class<?> clazz = obj.getClass();
		Field[] fields = clazz.getDeclaredFields();
		for(int i = 0; i < fields.length; i++){
			try {
				fields[i].setAccessible(true);
				result.put(fields[i].getName(), fields[i].get(obj));
			} catch (IllegalArgumentException e) {
				logger.warn("JavaBean转Map异常", e);
			} catch (IllegalAccessException e) {
				logger.warn("JavaBean转Map异常", e);
			}
		}
		return result;
	}
}
